/**
 * 
 */
package pruebas.tiendaOl.persistencia.jpa.repositorios;

import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

import javax.inject.Inject;
import javax.persistence.EntityManager;

import pruebas.tiendaOl.dominio.entidades.Cliente;
import pruebas.tiendaOl.dominio.repositorios.RepoCliente;

import com.intelap.fabricaciones.UnidadTrabajo;
import com.intelap.fabricaciones.UnidadTrabajo.Operacion;

/** @author ggpollit */
public class RepoCliente_Jpa implements RepoCliente {
	@Inject
	private Logger logger;
	@Inject
	private UnidadTrabajo ut;

	@Override
	public Cliente buscarCliente(final String nombre) {
		try {
			return ut.ejecutar(new Operacion<Cliente, RuntimeException>() {
				@Override
				public Cliente ejecutarme(UnidadTrabajo ut, EntityManager em) {
					List<Cliente> clientes = em.createQuery("select c from Cliente c where c.nombreUsuario = :nu", Cliente.class)
							.setParameter("nu", nombre).getResultList();
					return clientes.isEmpty() ? null : clientes.get(0);
				}
			});
		} catch (Exception e) {
			String mensaje = "Error inesperado";
			logger.log(Level.SEVERE, mensaje, e);
			throw new RuntimeException(mensaje, e);
		}
	}
}
